With the advancement in manufacturing technology, flash memories consume lower power, have smaller printed circuit board (PCB) footprints, store more data, and have longer data retention. Designers must understand how these flash memories operate in order to design associated memory controllers. The serial peripheral interface (SPI) is one type of interface to flash memory. SPI flash memory includes clock and data interface pins based on different commands. Each command is unique and exhibits dynamic behavior change at the interface-level of the memory controller. To make the behavior dynamic, it is necessary to provide the information about the command and its expected behavior on interface lines to the memory controller. Based upon the command, the memory controller can control various operating aspects of the flash memory the interface-level, such as the amount of data to send in our out, the number of dummy bytes to send, how to send the data on available interface lines, and the like.
One type of SPI flash memory controller is software-driven. Software is used to maintain the complete logic information for each command and expected behavior for the memory controller. However, the software is frequently overloaded and is configuration dependent. Software-driven SPI flash memory controllers can be slow, which significantly affects system performance.